function [ EZZtot EZZelem Mzz] = EZZ( donnees )

maillage = donnees.maillage ;
poutre = donnees.poutre ;
Uh = donnees.res.Uh ;
Mzz = RegulMomZZ(donnees) ;

Mzz ;


EZZelem = zeros(length(maillage)-1,1) ;
EZZtot = 0 ;


for i=1:length(maillage)-1
    
    elementCourant = maillage(i:i+1) ;
    UhElem = Uh((i-1)*2 + 1 : (i-1)*2 + 4) ;
    MzzElem = Mzz(i:i+1) ;
    
    Kelem = RigiditeElementaire(elementCourant,poutre) ;
    KSelem = RigiditeElementaireMoment(elementCourant,poutre) ;
	Celem = MatCouplageElementaire(elementCourant,poutre) ;
    
%     contribM2;
%     vecContribCroise
%     UhElem
%     UhElem'*Kelem*UhElem;
    
    EZZelem(i) = 0.5*MzzElem'*KSelem*MzzElem - MzzElem'*Celem*UhElem + 0.5*UhElem'*Kelem*UhElem ;
    
    EZZtot = EZZtot + EZZelem(i) ;


end

EZZelem ;
EZZtot ;

end

